Learn in 10 minutes

Learn in 10 minutes

10分钟学会Java

编程语言

Java是一种高级的面向对象编程语言,以其"一次编写,到处运行"的原则而闻名。本教程涵盖Java 21+功能,帮助您快速学习Java基础。

1. 编写你的第一个Java程序

Java程序组织成类。让我们从一个简单的程序开始。创建一个名为HelloWorld.java的文件:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

编译并运行程序:

javac HelloWorld.java
java HelloWorld

输出将是:

Hello, World!

这个简单的程序展示了Java的基本结构。每个Java程序必须至少有一个类,main方法是入口点。

2. 基本语法

Java语法是结构化的,遵循特定规则:

// 这是单行注释
/* 这是
   多行注释 */

public class BasicSyntax {
    public static void main(String[] args) {
        System.out.println("Hello, Java!");
    }
}

Java基本语法规则:

  • 大小写敏感:Java区分大小写。Variablevariable是不同的。
  • 类名:应以大写字母开头,遵循驼峰命名法。
  • 方法名:应以小写字母开头,遵循驼峰命名法。
  • 分号:每个语句必须以分号;结尾。
  • 大括号:代码块使用大括号{}定义。
  • 注释:单行注释使用//,多行注释使用/* */

3. 变量和数据类型

Java是静态类型语言,必须显式声明变量类型。

变量命名规则

  • 必须以字母、下划线_或美元符号$开头。
  • 可以包含字母、数字、下划线和美元符号。
  • 不能是Java关键字。
  • 应遵循驼峰命名法。

Java的基本数据类型

  • byte:8位有符号整数(-128到127)
  • short:16位有符号整数(-32,768到32,767)
  • int:32位有符号整数(-2^31到2^31-1)
  • long:64位有符号整数(-2^63到2^63-1)
  • float:32位浮点数
  • double:64位浮点数
  • boolean:true或false
  • char:16位Unicode字符
public class DataTypes {
    public static void main(String[] args) {
        // 整数类型
        byte age = 25;
        short year = 2024;
        int population = 1000000;
        long distance = 93000000L; // L后缀表示long
        
        // 浮点类型
        float temperature = 36.5f; // f后缀表示float
        double pi = 3.14159265359;
        
        // 布尔和字符类型
        boolean isActive = true;
        char grade = 'A';
        
        // 字符串(引用类型)
        String name = "Alice";
        
        System.out.println("姓名:" + name + ",年龄:" + age);
    }
}

3.1 字符串操作

Java中的字符串是对象,不是基本类型:

public class StringExample {
    public static void main(String[] args) {
        String text = "Java编程";
        
        System.out.println("长度:" + text.length());
        System.out.println("大写:" + text.toUpperCase());
        System.out.println("小写:" + text.toLowerCase());
        System.out.println("索引0的字符:" + text.charAt(0));
        System.out.println("子字符串:" + text.substring(0, 4));
        System.out.println("包含'Java':" + text.contains("Java"));
        
        // 字符串连接
        String greeting = "你好," + "世界!";
        System.out.println(greeting);
        
        // 字符串格式化
        String formatted = String.format("π大约是%.2f", 3.14159);
        System.out.println(formatted);
    }
}

4. 数组和集合

4.1 数组

数组存储相同类型的多个值:

public class ArrayExample {
    public static void main(String[] args) {
        // 数组声明和初始化
        int[] numbers = {1, 2, 3, 4, 5};
        String[] fruits = new String[3];
        fruits[0] = "苹果";
        fruits[1] = "香蕉";
        fruits[2] = "橙子";
        
        // 访问数组元素
        System.out.println("第一个数字:" + numbers[0]);
        System.out.println("数组长度:" + numbers.length);
        
        // 遍历数组
        for (int i = 0; i < numbers.length; i++) {
            System.out.println("数字" + i + ":" + numbers[i]);
        }
        
        // 增强for循环(for-each)
        for (String fruit : fruits) {
            System.out.println("水果:" + fruit);
        }
        
        // 多维数组
        int[][] matrix = {{1, 2}, {3, 4}, {5, 6}};
        System.out.println("矩阵元素[1][1]:" + matrix[1][1]);
    }
}

4.2 集合

Java集合框架提供动态数据结构:

import java.util.*;

public class CollectionsExample {
    public static void main(String[] args) {
        // ArrayList(动态数组)
        ArrayList<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");
        names.remove("Bob");
        System.out.println("姓名:" + names);
        
        // HashMap(键值对)
        HashMap<String, Integer> ages = new HashMap<>();
        ages.put("Alice", 25);
        ages.put("Bob", 30);
        ages.put("Charlie", 35);
        System.out.println("Alice的年龄:" + ages.get("Alice"));
        
        // HashSet(唯一元素)
        HashSet<Integer> uniqueNumbers = new HashSet<>();
        uniqueNumbers.add(1);
        uniqueNumbers.add(2);
        uniqueNumbers.add(2); // 重复,不会被添加
        uniqueNumbers.add(3);
        System.out.println("唯一数字:" + uniqueNumbers);
        
        // 遍历集合
        for (String name : names) {
            System.out.println("姓名:" + name);
        }
        
        for (Map.Entry<String, Integer> entry : ages.entrySet()) {
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
    }
}

5. 运算符

Java提供各种运算符用于不同操作:

  • 算术运算符+-*/%(取模)、++(自增)、--(自减)
  • 比较运算符==!=><>=<=
  • 逻辑运算符&&(与)、||(或)、!(非)
  • 位运算符&|^~<<>>>>>
  • 赋值运算符=+=-=*=/=%=
public class OperatorsExample {
    public static void main(String[] args) {
        int a = 10, b = 3;
        
        // 算术运算
        System.out.println("加法:" + (a + b));
        System.out.println("减法:" + (a - b));
        System.out.println("乘法:" + (a * b));
        System.out.println("除法:" + (a / b));
        System.out.println("取模:" + (a % b));
        
        // 自增和自减
        System.out.println("前缀自增:" + (++a));
        System.out.println("后缀自减:" + (b--));
        
        // 比较运算
        System.out.println("相等:" + (a == b));
        System.out.println("不相等:" + (a != b));
        System.out.println("大于:" + (a > b));
        
        // 逻辑运算
        boolean x = true, y = false;
        System.out.println("与:" + (x && y));
        System.out.println("或:" + (x || y));
        System.out.println("非:" + (!x));
        
        // 赋值运算
        int c = 5;
        c += 3; // c = c + 3
        System.out.println("+=3后:" + c);
    }
}

6. 控制流

6.1 条件语句

public class ConditionalExample {
    public static void main(String[] args) {
        int score = 85;
        
        // if-else语句
        if (score >= 90) {
            System.out.println("等级:A");
        } else if (score >= 80) {
            System.out.println("等级:B");
        } else if (score >= 70) {
            System.out.println("等级:C");
        } else {
            System.out.println("等级:F");
        }
        
        // 三元运算符
        String result = (score >= 60) ? "及格" : "不及格";
        System.out.println("结果:" + result);
        
        // switch语句
        char grade = 'B';
        switch (grade) {
            case 'A':
                System.out.println("优秀!");
                break;
            case 'B':
                System.out.println("良好!");
                break;
            case 'C':
                System.out.println("一般");
                break;
            default:
                System.out.println("无效等级");
        }
    }
}

6.2 循环

public class LoopExample {
    public static void main(String[] args) {
        // for循环
        System.out.println("For循环:");
        for (int i = 0; i < 5; i++) {
            System.out.println("迭代:" + i);
        }
        
        // 增强for循环(for-each)
        System.out.println("\nFor-each循环:");
        int[] numbers = {1, 2, 3, 4, 5};
        for (int num : numbers) {
            System.out.println("数字:" + num);
        }
        
        // while循环
        System.out.println("\nWhile循环:");
        int count = 0;
        while (count < 3) {
            System.out.println("计数:" + count);
            count++;
        }
        
        // do-while循环
        System.out.println("\nDo-while循环:");
        int x = 0;
        do {
            System.out.println("X:" + x);
            x++;
        } while (x < 3);
        
        // break和continue
        System.out.println("\nBreak和continue:");
        for (int i = 0; i < 10; i++) {
            if (i == 5) {
                break; // 退出循环
            }
            if (i % 2 == 0) {
                continue; // 跳过偶数
            }
            System.out.println("奇数:" + i);
        }
    }
}

7. 方法(函数)

Java中的方法是属于类的函数:

public class MethodExample {
    
    // 无参数无返回值的方法
    public static void greet() {
        System.out.println("你好,世界!");
    }
    
    // 有参数和返回值的方法
    public static int add(int a, int b) {
        return a + b;
    }
    
    // 多参数方法
    public static String formatName(String firstName, String lastName) {
        return firstName + " " + lastName;
    }
    
    // 方法重载(相同名称,不同参数)
    public static int multiply(int a, int b) {
        return a * b;
    }
    
    public static double multiply(double a, double b) {
        return a * b;
    }
    
    // 可变参数
    public static int sum(int... numbers) {
        int total = 0;
        for (int num : numbers) {
            total += num;
        }
        return total;
    }
    
    public static void main(String[] args) {
        greet();
        
        int result = add(5, 3);
        System.out.println("加法结果:" + result);
        
        String fullName = formatName("张", "三");
        System.out.println("全名:" + fullName);
        
        System.out.println("整数相乘:" + multiply(4, 5));
        System.out.println("浮点数相乘:" + multiply(2.5, 3.0));
        
        System.out.println("多个数字的和:" + sum(1, 2, 3, 4, 5));
    }
}

8. 面向对象编程

8.1 类和对象

public class Person {
    // 实例变量(字段)
    private String name;
    private int age;
    private String email;
    
    // 构造方法
    public Person(String name, int age, String email) {
        this.name = name;
        this.age = age;
        this.email = email;
    }
    
    // 默认构造方法
    public Person() {
        this("未知", 0, "");
    }
    
    // getter方法
    public String getName() {
        return name;
    }
    
    public int getAge() {
        return age;
    }
    
    public String getEmail() {
        return email;
    }
    
    // setter方法
    public void setName(String name) {
        this.name = name;
    }
    
    public void setAge(int age) {
        if (age >= 0) {
            this.age = age;
        }
    }
    
    public void setEmail(String email) {
        this.email = email;
    }
    
    // 实例方法
    public void introduce() {
        System.out.println("你好,我是" + name + "," + age + "岁。");
    }
    
    // 带逻辑的方法
    public boolean isAdult() {
        return age >= 18;
    }
    
    // toString方法(重写Object的toString)
    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + ", email='" + email + "'}";
    }
    
    public static void main(String[] args) {
        // 创建对象
        Person person1 = new Person("Alice", 25, "[email protected]");
        Person person2 = new Person();
        
        // 使用方法
        person1.introduce();
        System.out.println("是否成年:" + person1.isAdult());
        
        person2.setName("Bob");
        person2.setAge(17);
        person2.setEmail("[email protected]");
        
        System.out.println(person1.toString());
        System.out.println(person2.toString());
    }
}

这个全面的Java教程涵盖了Java编程入门所需的基本概念。Java的强类型系统、面向对象特性和丰富的标准库使其成为构建健壮应用程序的强大工具。通过练习这些示例并实验代码来加深对Java编程概念的理解。